Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat-be: 지원서 작성 완료 시 이메일 발송 기능 #960

Open
wants to merge 2 commits into
base: be/develop
Choose a base branch
from

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Dec 17, 2024

목적

지원서 작성 완료 시 지원자의 이메일로 지원서를 발송합니다.

작업 세부사항

  • 지원서 작성 완료 시 지원자의 이메일로 지원서를 발송
  • 이메일 전송 테스트

참고 사항

  • 다음과 같이 이메일이 전송됩니다.
    image

  • EventListener 방식을 사용했습니다
    EventListener를 사용한 이유는, 지원폼이 DB에 안정적으로 저장한 뒤에 이메일을 전송하는 것이 맞다고 생각했기 때문입니다. 기존 비동기 이메일 전송 메서드를 지원폼 작성 메서드 내에서 호출하게 된다면, 지원폼이 저장되지 않았는데, 확인 이메일이 전송될 수 있는 문제점이 있다고 생각했기 때문입니다.

아래의 별표줄 밑에 요구사항 ID만 작성해주세요. Prefix 금지!


APPLYFORM_EMAIL

closes #959

@github-actions github-actions bot added backend 백엔드 feature 새로운 기능 labels Dec 17, 2024
@@ -68,6 +73,10 @@ public void submit(long applyFormId, ApplyFormSubmitRequest request) {
AnswerCreateRequest answerCreateRequest = getAnswerCreateRequest(question, answerCreateRequests);
answerService.saveAnswerReplies(answerCreateRequest, question, applicant);
}

Club club = dashboard.getClub();
Hibernate.initialize(club);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EmailServicesend 메서드에서 Club, Applicant를 매개변수로 받고 있더라고요.
Club을 그대로 전달하게 되면 다음과 같은 오류가 발생해서 이메일 전송에 실패합니다.
image

여기에서 강제 초기화해서 전달해두었습니다.!

유연성을 위해서 이메일 전송 발신자, 수신자를 String 매개변수로 하는건 어떨까 싶습니다?!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추후에 어떤 대상에게 보낸 이메일만 검색할 수 있는 기능을 넣는다면 현재 구조가 좋다고 생각하지만,, 추후의 유연성을 위해선 String 값인것도 좋을 것 같네요.
현재 상태에서 발신자를 String으로 변경한다면 동아리 이름 중복이 허용되었을 때, 내 동아리가 아닌 다른 동아리의 메일을 구분할 수 없을 것 같네요.

@xogns1514 xogns1514 marked this pull request as ready for review December 26, 2024 08:35
Copy link
Contributor Author

1735202171.885249

Copy link
Contributor

@HyungHoKim00 HyungHoKim00 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EventListener를 사용한 이유는, 지원폼이 DB에 안정적으로 저장한 뒤에 이메일을 전송하는 것이 맞다고 생각했기 때문입니다. 기존 비동기 이메일 전송 메서드를 지원폼 작성 메서드 내에서 호출하게 된다면, 지원폼이 저장되지 않았는데, 확인 이메일이 전송될 수 있는 문제점이 있다고 생각했기 때문입니다.

현재 publishEvent가 호출되는 곳에서 이메일 전송 메서드를 호출하면, 지원폼이 저장되지 않은 경우 이메일 전송 메서드에 도달하기 전에 에러가 발생하여 이메일이 전송되지 않을 것 같아요. 어떤 경우에 말씀해주신 상황이 나오는 지 말씀해주실 수 있나요?

@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void handleApplyFormEvent(ApplyFormEvent event) {

log.info("시작");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트때 사용한 로그인가용??ㅋㅋ

ApplyForm applyForm = event.applyForm();
Applicant applicant = event.applicant();

String subject = "지원 완료 안내";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제목에 동아리 이름도 넣어주는건 어떤가요?

@@ -68,6 +73,10 @@ public void submit(long applyFormId, ApplyFormSubmitRequest request) {
AnswerCreateRequest answerCreateRequest = getAnswerCreateRequest(question, answerCreateRequests);
answerService.saveAnswerReplies(answerCreateRequest, question, applicant);
}

Club club = dashboard.getClub();
Hibernate.initialize(club);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추후에 어떤 대상에게 보낸 이메일만 검색할 수 있는 기능을 넣는다면 현재 구조가 좋다고 생각하지만,, 추후의 유연성을 위해선 String 값인것도 좋을 것 같네요.
현재 상태에서 발신자를 String으로 변경한다면 동아리 이름 중복이 허용되었을 때, 내 동아리가 아닌 다른 동아리의 메일을 구분할 수 없을 것 같네요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend 백엔드 feature 새로운 기능
Projects
Status: 검토중
Development

Successfully merging this pull request may close these issues.

2 participants